package org.gwc.json;

import org.gwc.pojo.Person;
import org.springframework.aop.support.DelegatePerTargetObjectIntroductionInterceptor;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;

import java.util.ArrayList;
import java.util.List;

/**
 * projectName: com.atguigu.json
 *
 * @author: 赵伟风
 * description:
 */

/**
 * @ResponseBody 数据直接放入响应体返回，也不会在走视图解析器
 * @RestController = @Controller+@ResponseBody  适合用在只返回json的类中
 */
@RequestMapping("json")
//@Controller
//@ResponseBody
@RestController
public class JsonController {

    // data  -> 请求体 post  {name,age,gender}
    // 前端 -》 json -> 415 不支持数据类型呢？？
    // 原因： Java原生的api,只支持路径参数和param参数 request.getParameter("key"); param  不支持json
    //        json就是前端的格式
    // 解决： 1. 导入json处理的依赖  2. handlerAdapter配置json转化器
    @PostMapping("data")
    public String data(@RequestBody Person person){
        System.out.println("person = " + person);
        return person.toString();
    }


    @PostMapping("data1")
    public Person data1(@RequestBody Person person){
        System.out.println("person = " + person);
        return person;
    }

    // 响应json数据

    /**
     * Javamvc会自动将Java对象转换为json对象
     * java对象包括自定义的对应以及结合，列表等对象
     * @return
     */
    @GetMapping(value = "sendData")
    public Person sendData(){
        Person person = new Person();
        person.setAge(10);
        person.setName("gwc");
        person.setGender("man");
        return person;
    }

    @GetMapping(value = "sendData1")
    public List<String> sendData1(){

        List<String> names = new ArrayList<>();
        names.add("name");
        names.add("age");
        names.add("gender");
        return names;
    }
}
